package com.jxpanda.spring.module.auth.core.authentication.manager;

import com.jxpanda.spring.module.auth.core.authentication.token.CollaborativeAuthenticationToken;
import reactor.core.publisher.Mono;

/**
 * 第三方协同认证管理器
 * 第三方认证成功后通常会返回一个标识符（openId、unionId等）
 * Spring oauth2的默认认证器通常认证成功后就返回了
 * 而实际的业务通常是需要通过这个标识符去查询用户信息，然后再用户信息来认证
 * 该认证器就是处理这类业务的
 * <p/>
 * 这个认证器是使用类似过滤器链的方式来运行的
 */
public interface CollaborativeReactiveAuthenticationManager {
    Mono<CollaborativeAuthenticationToken> authenticate(CollaborativeAuthenticationToken collaborativeAuthenticationToken);
}
